package com.ruoyi.cms.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cms.entity.domain.Model;
import com.ruoyi.cms.entity.domain.ModelCollection;
import com.ruoyi.cms.entity.req.GenerateModelReq;
import com.ruoyi.cms.entity.req.ModelListReq;
import com.ruoyi.cms.entity.req.MoveToCollectionReq;
import com.ruoyi.cms.entity.req.ReGenerateModelReq;
import com.ruoyi.cms.entity.resp.FileListResp;
import com.ruoyi.cms.entity.resp.ModelAuthorInfo;
import com.ruoyi.cms.entity.resp.ModelDetailResp;
import com.ruoyi.cms.entity.resp.ModelListResp;
import com.ruoyi.common.core.domain.R;

import java.util.List;

/**
 * 模型Service接口
 */
public interface ModelService {

    R<Page<ModelListResp>> list(ModelListReq req);

    R<Page<ModelListResp>> myModelList(ModelListReq req);

    R<?> generate(GenerateModelReq req);

    R<FileListResp> getFileList(Long modelId);

    R<FileListResp> getMyFileList(Long modelId);

    R<Page<ModelListResp>> queryModelByCollectionId(ModelListReq req);

    R<Page<ModelListResp>> queryMyModelByCollectionId(ModelListReq req);

    R<?> delete(List<String> ids);

    void modelCheck(Model model);

    R<?> update(Model model);

    void collectionCheck(ModelCollection modelCollection);

    R<ModelDetailResp> detail(Long id);

    R<ModelDetailResp> myDetail(Long id);

    R<?> moveToCollection(MoveToCollectionReq req);

    ModelAuthorInfo convertAuthorInfo(Long userId);

    R<?> reGenerate(ReGenerateModelReq req) throws Exception;
}
